import { constantRoutes, asyncRoutes } from '@/router'// 导入静态路由
const state = {
  routes: constantRoutes
}
const mutations = {
  // newRoutes可以认为是 用户登录 通过权限所得到的动态路由的部分
  setRoutes(state, newRoutes) {
    // 下面这么写不对 不是语法不对 是业务不对
    // state.routes = [...state.routes, ...newRoutes]
    // 有一种情况  张三 登录 获取了动态路由 追加到路由上  李四登录 4个动态路由
    // 应该是每次更新 都应该在静态路由的基础上进行追加
    state.routes = [...constantRoutes, ...newRoutes]// 合并
  }
}

const actions = {
  // 在登录的时候调用的，对路由和左侧菜单进行筛选
  filterRoutes(context, menus) {
    const routes = []
    menus.forEach(key => {
      // key就是标识
      // asyncRoutes 找 有没有对象中的name属性等于 key的 如果找不到就没权限 如果找到了 要筛选出来
      routes.push(...asyncRoutes.filter(item => item.path === '/' + key)) // 得到一个数组 有可能 有元素 也有可能是空数组
    })
    context.commit('setRoutes', routes) // 将动态路由提交给mutations
    return routes// 筛选之后的路由
  }
}
export default {
  namespaced: true, // 开启命名空间
  state,
  mutations: mutations,
  actions: actions
}

